package controlador;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

import archivos.ConexionArchivo;

import vista.VentanaPrincipal;

import modelo.Cliente;
import modelo.Drogueria;
import modelo.Linea;
import modelo.Producto;
import modelo.Proveedor;

public class ControladorPrincipal implements ActionListener {

	private VentanaPrincipal vistaPrincipal;
	private Drogueria drogueria;
	private String rutaTxt;

	public ControladorPrincipal() {
		super();
		// TODO Auto-generated constructor stub
		vistaPrincipal = new VentanaPrincipal();
		vistaPrincipal.setVisible(true);
		vistaPrincipal.setLocationRelativeTo(null);
		vistaPrincipal.agregarListener(this);
		drogueria = new Drogueria();

	}

	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		System.out.println(e.getActionCommand());
		if (e.getActionCommand().equalsIgnoreCase("Compra")) {
			if (drogueria.cantidadProductos() > 0)
				new ControladorVentanaFacturaPrincipal(drogueria);
			else {
				vistaPrincipal.mostrarMensaje("No hay Productos incluidos.");
			}
		} else if (e.getActionCommand().equalsIgnoreCase("Actualizar")) {
			if (drogueria.cantidadLineas() > 0) {
				new ControladorListaProducto(drogueria);
			} else {
				vistaPrincipal.mostrarMensaje("No hay linea incluida.");
			}

		} else if (e.getActionCommand().equalsIgnoreCase("ActualizarL")) {

			new ControladorListaLinea(drogueria);
		} else if (e.getActionCommand().equalsIgnoreCase("Realizar Pedido")) {
			new ControladorListaPedido(drogueria);
			
		}
		else if (e.getActionCommand().equalsIgnoreCase("Actualizar Depósitos")){
			new ControladorPantallaDeposito(drogueria);
		}
		
		else if (e.getActionCommand().equalsIgnoreCase("Clientes")){
			new ControladorVentanaConsultaCliente(drogueria);
		}
		
		else if (e.getActionCommand().equalsIgnoreCase("Proveedor")){
			new ControladorVentanaConsultaProveedor(drogueria);
		}else if(e.getActionCommand().equalsIgnoreCase("Realizar Despachos")){
			if (drogueria.cantidadPedidos() > 0){
				new ControladorPantallaDespacho(drogueria);
			}
			else {
				new ControladorPantallaDespacho(drogueria);
				//vistaPrincipal.mostrarMensaje("¡No Existen Pedidos para Despachar!");
			}
			
		}else if(e.getActionCommand().equalsIgnoreCase("Consultar Despachos")){
			if (drogueria.cantidadDepositos() > 0){
				new ControladorPantallaConsultaDespachos(drogueria);
			}
			else {
				new ControladorPantallaConsultaDespachos(drogueria);
				//vistaPrincipal.mostrarMensaje("¡No se ha realizado ningún Despacho!");
			}
			
		}
		else if (e.getActionCommand().equalsIgnoreCase(
			"Informacion de Producto")) {
		if (drogueria.cantidadProductos() > 0) {
			new ControladorConsultaProducto(drogueria);
		} else {
			vistaPrincipal.mostrarMensaje("¡Primero debe Incluir al menos un Productos!");
		}
		}
	
		
		else if (e.getActionCommand().equalsIgnoreCase("Cargar Cliente")){
			obtenerDireccionCliente();
		}
		
		else if (e.getActionCommand().equalsIgnoreCase("Cargar Proveedor")){
			obtenerDireccionProveedor();
		}
		
		else if (e.getActionCommand().equalsIgnoreCase("Cargar Linea")){
			obtenerDireccionLinea();
		}
		
		else if (e.getActionCommand().equalsIgnoreCase("Cargar Producto")){
			obtenerDireccionProducto();
		}
	}

	public void cargarListadoTxtCliente(String ruta) {
		
		//String ruta = System.getProperties().getProperty("user.dir")+"/src/archivos/Cliente.txt";
		ConexionArchivo cnx = new ConexionArchivo(ruta);
		
		String datos = cnx.leer();

		
			Cliente cliente ;

			if((!datos.equals("")) )
			{
				Scanner lector = new Scanner(datos);
				while(lector.hasNextLine())
				{

					cliente = new Cliente();
					cliente.setId(lector.nextLine());
					cliente.setNombre(lector.nextLine());
					cliente.setTelefono(lector.nextLine());
					cliente.setCorreo(lector.nextLine());
					cliente.setDireccion((lector.nextLine()));					
			
					drogueria.incluirCliente(cliente);
	
				}
				
				JOptionPane.showMessageDialog(null, "Archivo de texto cargado con exito!");
			}
			
			else{
				JOptionPane.showMessageDialog(null, "Error! el archivo de texto no posee datos","ATENCION!!!",JOptionPane.ERROR_MESSAGE);
				return;
			}
		
	}
	
	public void cargarListadoTxtProveedor(String ruta) {
		
		//String ruta = System.getProperties().getProperty("user.dir")+"/src/archivos/Cliente.txt";
		ConexionArchivo cnx = new ConexionArchivo(ruta);
		
		String datos = cnx.leer();

		
			Proveedor proveedor ;

			if((!datos.equals("")) )
			{
				Scanner lector = new Scanner(datos);
				while(lector.hasNextLine())
				{

					proveedor = new Proveedor();
					proveedor.setId(lector.nextLine());
					proveedor.setNombre(lector.nextLine());
					proveedor.setTelefono(lector.nextLine());
					proveedor.setCorreo(lector.nextLine());
					proveedor.setDireccion((lector.nextLine()));					
			
					drogueria.incluirProveedor(proveedor);
	
				}
				
				JOptionPane.showMessageDialog(null, "Archivo de texto cargado con exito!");
			}
			
			else{
				JOptionPane.showMessageDialog(null, "Error! el archivo de texto no posee datos","ATENCION!!!",JOptionPane.ERROR_MESSAGE);
				return;
			}
		
	}
	
	public void cargarListadoTxtProducto(String ruta) {
		
		//String ruta = System.getProperties().getProperty("user.dir")+"/src/archivos/Cliente.txt";
		ConexionArchivo cnx = new ConexionArchivo(ruta);
		
		String datos = cnx.leer();

		
			Producto producto ;

			if((!datos.equals("")) )
			{
				Scanner lector = new Scanner(datos);
				while(lector.hasNextLine())
				{
					String codp = lector.nextLine();
					String codl = lector.nextLine();
					String present = lector.nextLine();
					String nombre = lector.nextLine();
					String imagen = lector.nextLine();

					Linea linea = new Linea();
					
					for(int i =0;i<drogueria.cantidadLineas();i++){
						if(codl.equals(drogueria.getUnaLinea(i).getCodigoLinea())){
							linea = drogueria.getUnaLinea(i);
						}
						
					}

					producto = new Producto();
					producto.setCodigoProducto(codp);
					producto.setCodigoLinea(codl);
					producto.setPresentacion(present);
					producto.setNombre(nombre);
					producto.setImage(imagen);
					producto.setLinea(linea);
					producto.setCantidadReal(0);
					producto.setCantidadDisponible(0);
							
			
					drogueria.incluirProducto(producto);
	
				}
				
				JOptionPane.showMessageDialog(null, "Archivo de texto cargado con exito!");
			}
			
			else{
				JOptionPane.showMessageDialog(null, "Error! el archivo de texto no posee datos","ATENCION!!!",JOptionPane.ERROR_MESSAGE);
				return;
			}
		
	}
	
	public void cargarListadoTxtLinea(String ruta) {
		
		//String ruta = System.getProperties().getProperty("user.dir")+"/src/archivos/Cliente.txt";
		ConexionArchivo cnx = new ConexionArchivo(ruta);
		
		String datos = cnx.leer();

		
			Linea linea ;

			if((!datos.equals("")) )
			{
				Scanner lector = new Scanner(datos);
				while(lector.hasNextLine())
				{

					linea = new Linea();
					linea.setNumeroLinea(lector.nextLine());
					linea.setClasificacion(lector.nextLine());
									
			
					drogueria.incluirLineas(linea);
	
				}
				
				JOptionPane.showMessageDialog(null, "Archivo de texto cargado con exito!");
			}
			
			else{
				JOptionPane.showMessageDialog(null, "Error! el archivo de texto no posee datos","ATENCION!!!",JOptionPane.ERROR_MESSAGE);
				return;
			}
		
	}
	
	public void obtenerDireccionCliente() {

		JFileChooser examinar = new JFileChooser();
		examinar.setFileSelectionMode(JFileChooser.FILES_ONLY);
		int a = examinar.showOpenDialog(examinar);
		
		if (a == JFileChooser.APPROVE_OPTION) {

			rutaTxt = examinar.getSelectedFile().toString();
			cargarListadoTxtCliente(rutaTxt);
			
		}
		
	}
	
	public void obtenerDireccionProveedor() {

		JFileChooser examinar = new JFileChooser();
		examinar.setFileSelectionMode(JFileChooser.FILES_ONLY);
		int a = examinar.showOpenDialog(examinar);
		
		if (a == JFileChooser.APPROVE_OPTION) {

			rutaTxt = examinar.getSelectedFile().toString();
			cargarListadoTxtProveedor(rutaTxt);
			
		}	
	}
	
	public void obtenerDireccionProducto() {

		JFileChooser examinar = new JFileChooser();
		examinar.setFileSelectionMode(JFileChooser.FILES_ONLY);
		int a = examinar.showOpenDialog(examinar);
		
		if (a == JFileChooser.APPROVE_OPTION) {

			rutaTxt = examinar.getSelectedFile().toString();
			cargarListadoTxtProducto(rutaTxt);
			
		}	
	}
	
	public void obtenerDireccionLinea() {

		JFileChooser examinar = new JFileChooser();
		examinar.setFileSelectionMode(JFileChooser.FILES_ONLY);
		int a = examinar.showOpenDialog(examinar);
		
		if (a == JFileChooser.APPROVE_OPTION) {

			rutaTxt = examinar.getSelectedFile().toString();
			cargarListadoTxtLinea(rutaTxt);
			
		}	
	}
}